namespace Sagile.Nepma
{
    /// <summary>
    /// Interface containing properties and methods related to sequencial task handling.
    /// </summary>
    public interface ISequenceTask : IManageableTask, IProgressReporter, IExceptionReporter
    {
        /// <summary>
        /// Gets or sets a value indicating whether this instance is a milestone.
        /// If set to true, execution must pause upon completion of this task.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is a milestone; otherwise, <c>false</c>.
        /// </value>
        bool IsMilestone { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance can be parallelized.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance can be parallelized; otherwise, <c>false</c>.
        /// </value>
        bool CanBeParallelized { get; set; }

        /// <summary>
        /// Gets or sets the parallelization group (used only if task can be parallelized).
        /// </summary>
        /// <value>The parallelization group.</value>
        int ParallelizationGroup { get; set; }

        /// <summary>
        /// Gets the unique id based on the id
        /// </summary>
        /// <value>The unique id.</value>
        string UniqueId { get; }

        /// <summary>
        /// Gets or sets the id.
        /// </summary>
        /// <value>The id.</value>
        string Id { get; set; }
    }
}
